// This File is part of the "nyaqt" Project
// 
// Copyright  2009 sometmes@gmail.com
// All rights reserved
// 
// This library is free software; you can redistribute it and/or modify
// it under the terms of the GNU Lesser General Public License as published
// by the Free Software Foundation; either version 2.1 of the License, or
// (at your option) any later version.
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.



using System;
using System.Collections.Generic;
using System.Text;
using nyaqt.Plugins;

namespace nyaqt
{
    class SimpleConnectionEditorPlugin
    {
        static System.Collections.Generic.Dictionary<string, string> _pluginList = new Dictionary<string, string>();

        public static void RegisterPlugin(string invariantName, string assemblyQualifiedTypeName)
        {
            _pluginList.Add(invariantName, assemblyQualifiedTypeName);
        }

        public static ISimpleConnectionEdit CreateInstance(string invariantName)
        {
            string assemblyQualifiedTypeName;
            if (invariantName != null && _pluginList.ContainsKey(invariantName))
                assemblyQualifiedTypeName = _pluginList[invariantName];
            else
                assemblyQualifiedTypeName = "nyaqt.DefaultPlugIn.SimpleConnectionEditor";
            Type t = Type.GetType(assemblyQualifiedTypeName);
            if (t == null)
                throw new SystemException("Editor not found: " + assemblyQualifiedTypeName);
            return (Activator.CreateInstance(t) as ISimpleConnectionEdit);
        }
    }

    class ConnectionPropertiesPlugin
    {
        static System.Collections.Generic.Dictionary<string, string> _pluginList = new Dictionary<string, string>();

        /// <summary>
        /// </summary>
        /// <param name="invariantName"></param>
        /// <param name="assemblyQualifiedTypeName"></param>
        /// <param name="version">As a convention, 1.0 and 1.1 providers gets version=1 and 2.0 providers, version=2</param>
        public static void RegisterPlugin(string invariantName, string assemblyQualifiedTypeName, int version)
        {
            invariantName += ";" + version;
            _pluginList.Add(invariantName, assemblyQualifiedTypeName);
        }

        public static IConnectionProperties CreateInstance(string invariantName, int version)
        {
            string key = invariantName + ";" + version;
            string assemblyQualifiedTypeName;
            if (invariantName != null && _pluginList.ContainsKey(key))
                assemblyQualifiedTypeName = _pluginList[key];
            else
                assemblyQualifiedTypeName = "nyaqt.DefaultPlugIn.ConnectionProperties";
            Type t = Type.GetType(assemblyQualifiedTypeName);
            if (t == null)
                throw new SystemException("Plugin not found: " + assemblyQualifiedTypeName);
            return (Activator.CreateInstance(t) as IConnectionProperties);
        }
    }
}
































